package cn.edu.nju.software.greencreditsystem.DAO;

import cn.edu.nju.software.greencreditsystem.domain.EnvironmentFactor;
import java.awt.image.BufferedImage;
import java.sql.Date;
import java.util.List;

/**
 * 作者：何启睿
 * 创建时间：2011-8-18
 * 类描述：EnvironmentFactor类DAO接口
 */
public interface EnvironmentFactorDAO
{
    public EnvironmentFactor getById(int id);
    public EnvironmentFactor getByName(String name);
    
    /**
     * 方法描述：获取所有属于指定类型的环境指标（环境评分无类型）
     * param：类型
     * return：EnvironmentFactor列表
    */
    public List<EnvironmentFactor> getByType(String type);
    
    /**
     * 方法描述：获取与指定企业有关的所有环境因素
     * param：企业
     * return：EnvironmentFactor列表
    */
    public List<EnvironmentFactor> getIndexFactor(int enterpriseID);
    
    /**
     * 方法描述：取得所有环境指标因素
     * param：
     * return：EnvironmentFactor列表
    */
    public List<EnvironmentFactor> getAllIndexFactor();
    
    /**
     * 方法描述：取得所有环境评分因素
     * param：
     * return：EnvironmentFactor列表
    */
    public List<EnvironmentFactor> getAllScoreFactor();
    
    /**
     * 方法描述：判断指定环境因素是指标还是评分
     * param：环境因素
     * return：TRUE指标，FALSE评分
    */
    public boolean isIndex(int environmentFactorID);
    
    /**
     * 方法描述：获得指定环境因素在指定时间（精确到月）所有企业的均值
     * param：环境因素，时间
     * return：均值
    */
    public double getAverage(int environmentFactorID, Date date);
    
    /**
     * 方法描述：取得企业的一项环境因素在指定时间段内（前后闭区间）的横纵向比较折线图
     * param：企业、环境因素、开始时间、结束时间、图片宽度，图片高度
     * return：包含折线图的BufferedImage对象
    */
    public BufferedImage drawImage(int enterpriseID, int environmentFactorID, Date begin, Date end, int width, int height);
    
    /**
     * 方法描述：取得企业的一项环境因素在指定时间段内的横纵向比较折线图（图片宽高使用默认值600, 380）
     * param：企业、环境因素、开始时间、结束时间
     * return：包含折线图的BufferedImage对象
    */
    public BufferedImage drawImage(int enterpriseID, int environmentFactorID, Date begin, Date end);
    
    /**
     * 方法描述：取得企业的一项环境因素有史以来的横纵向比较折线图
     * param：企业、环境因素、图片宽度，图片高度
     * return：包含折线图的BufferedImage对象
    */
    public BufferedImage drawImage(int enterpriseID, int environmentFactorID, int width, int height);
    
    /**
     * 方法描述：取得企业的一项环境因素有史以来的横纵向比较折线图（图片宽高使用默认值600,380）
     * param：企业、环境因素
     * return：包含折线图的BufferedImage对象
    */
    public BufferedImage drawImage(int enterpriseID, int environmentFactorID);
}
